package com.guo.redis.business.hello.service;

/**
 * 模拟库存服务，定义接口
 */
public interface StockCounterService {

    /**
     * 获取 库存数量
     * @param stockKey 库存商品 Key
     * @return 数量，null 表示没有，否则为数值
     */
    Object getStockNumbers(String stockKey);

    /**
     * 扣减库存
     * @param stockKey 库存商品key
     * @param num 扣减数量
     * @param stockCallback 回调函数，主要是初始化库存
     * @return -1，表示不限制库存;-2，表示库存不足;-3，表示库存没有初始化; 正整数表示剩余库存数量
     */
    long countDownStock(String stockKey, int num, IStockCallback stockCallback);

    void initStock(String stockKey, long expire, long amount);

}
